wayland: Only attach the buffer if there was damage
authorJonas Ådahl <jadahl@gmail.com>
Tue, 16 Feb 2016 05:05:25 +0000 (13:05 +0800)
committerRay Strode <rstrode@redhat.com>
Tue, 16 Feb 2016 21:22:51 +0000 (16:22 -0500)
There is no point in attaching and then committing the same buffer if
there was no damage. This will also make us do less unnecessary backfill
read backs, for the cases where we paint with an empty paint region.

https://bugzilla.gnome.org/show_bug.cgi?id=762120

gdk/wayland/gdkwindow-wayland.c

index bafeb715d802be53a39044d8bd1823fe09023013..87bdc934aef6b4a9c889681382e248af624e515c 100644 (file)
@@ -782,7 +782,8 @@ gdk_window_impl_wayland_end_paint (GdkWindow *window)
   cairo_rectangle_int_t rect;
   int i, n;
 
-  if (!window->current_paint.use_gl)
+  if (!window->current_paint.use_gl &&
+      !cairo_region_is_empty (window->current_paint.region))
     {
       gdk_wayland_window_attach_image (window);
 
@@ -809,8 +810,9 @@ gdk_window_impl_wayland_end_paint (GdkWindow *window)
         {
           cairo_region_get_rectangle (window->current_paint.region, i, &rect);
           wl_surface_damage (impl->display_server.wl_surface, rect.x, rect.y, rect.width, rect.height);
-          impl->pending_commit = TRUE;
         }
+
+      impl->pending_commit = TRUE;
     }
 }